#!/bin/bash

modTable() {
  eval iptables -t $TABLE $*
}

insToChain() {
  local chain=$1
  local action=$2
  shift 2

  [  "x${1:0:1}" == 'x-' -o "x${1:0:1}" == 'x!' -o -z "$1" ] && modTable --insert $chain $* --jump $action || {
    local newChain=$1
    shift 1
    modTable --new-chain $newChain
    modTable --insert $chain $* --jump $newChain
    chain=$newChain
    modTable --append $chain --jump LOG --log-level 1 --log-prefix "'[IPT $chain] '"
    modTable --append $chain --jump $action
  }
}

addToChain() {
  local chain=$1
  local action=$2
  shift 2

  [  "x${1:0:1}" == 'x-' -o "x${1:0:1}" == 'x!' -o -z "$1" ] && modTable --append $chain $* --jump $action || {
    local newChain=$1
    shift 1
    modTable --new-chain $newChain
    modTable --append $chain $* --jump $newChain
    modTable --append $newChain --jump LOG --log-level 1 --log-prefix "'[IPT $newChain] '"
    modTable --append $newChain --jump $action
  }
}

